#include "../../include/GlobalMemory.hpp"

////////////////////////////////////////////////////////////////////////
// CUDA global constants
////////////////////////////////////////////////////////////////////////

__constant__ int diff;
__constant__ int cons_d[3];

////////////////////////////////////////////////////////////////////////
// kernel routine
////////////////////////////////////////////////////////////////////////

__global__ void increaseArrayOnDevice(int *a, int N)
{
	int idx = blockIdx.x * blockDim.x + threadIdx.x;

	if (idx < N) 
		a[idx] = cons_d[idx] + diff;
}

void launchKernel( CH::GlobalMemory<int> & result_d)
{
	///run kernel
    int blockSize = 4;
    int nBlocks = 4;
	increaseArrayOnDevice <<< nBlocks, blockSize >>> (result_d.get_memory_ptr(), result_d.size());
}